package com.fancy.common.constant;

import java.util.HashMap;
import java.util.Map;

/**
 * 
 * 
 * @author xinfeng.hu 2013-3-13下午12:15:34
 * @version 1.0.0
 * @category 杭州广桥网络技术有限公司(商业先知)
 */
public class LBSConstants {

	/** BUMP最大允许阻塞的线程 **/
	public final static int BUMP_THREAD_MAX_SIZE = 50;

	/** BUMP查询key的有效时间,单位秒 **/
	public final static int BUMP_ACTIVE_TIME = 10; // s

	/** BUMP等待时间,单位秒 **/
	public final static int BUMP_WAITTIME = 1; // S

	/** BUMP最长等待时间,单位秒 **/
	public final static int BUMP_BLOCKTIME = 3; // S

	/** BUMP cache 失效时间 **/
	public final static int BUMP_CACHE_TIMEOUT = 120;

	/** 找附近的人 **/
	public final static int DISTANCE = 10; // 找附近的人,距离范围,单位千米

	/** 找附近的人位置失效时间 **/
	public final static int NEARBY_EXPIRED_TIME = 3600; // 默认半小时 1800

	/*** 餐饮大类 ***/
	public final static String RESTAURANT = "50331648";

	/*** 酒店大类 ***/
	public final static String HOTEL = "33554432";
	/*** 医院 **/
	public final static String HOSPITAL = "16777216";
	/*** 院校 **/
	public final static String ACADEMY = "83886080";
	/*** 旅游景点 **/
	public final static String SCENERYSPOT = "100663296";
	/*** 大型超市 **/
	public final static String SUPERMARKET = "118489088";
	/*** 便民服务 **/
	public final static String CONVSERVICE = "134217728";
	/** 社会组织公共管理 **/
	public final static String SOCIALORG = "150994944";
	/** 房地产 **/
	public final static String ESTATE = "218103808";
	/** 公司企业 **/
	public final static String COMPANY = "386924544";
	/** 仓库 **/
	public final static String STORAGE = "318767104";
	/** 邮局 **/
	public final static String POST = "335544320";

	/** 新增常量，增加本应用的google地点库 **/

	/***** 该请求基于的地方信号的精确度（以米表示） ********/
	public final static int accuracy = 100;

	/***** 地点类型比如：餐馆、政府部门等 ********/
	public final static String type = "restaurant";

	/***** 地点展示语言 ********/
	public final static String language = "zh-CN";

	/***** 该地址的状态1系统未审核，2审核通过，3审核失败 ********/
	public final static int status = 1;

	/*** 搜索类型 ***/
	public static Map<Integer, String> MAP_TYPE = new HashMap<Integer, String>(16);
	static {
		MAP_TYPE.put(-1, "[0,400000000]");
		// MAP_TYPE.put(0,
		// RESTAURANT+","+HOTEL+","+HOSPITAL+","+ACADEMY+","+SCENERYSPOT+","+SUPERMARKET+","+SUPERMARKET+","+SOCIALORG+","+ESTATE+
		// ","+COMPANY+","+STORAGE+","+POST);
		MAP_TYPE.put(0, "[16777216,399924544]");
		MAP_TYPE.put(1, RESTAURANT);
		MAP_TYPE.put(2, HOTEL);
	}

	/*** 每页显示数目 ***/
	public final static int PAGE_SIZE = 8;

	/*** 搜索范围,单位米 ***/
	public final static int SEARCH_RADIUS = 500;

	/****
	 * http://search.ditu.aliyun.com/search?t=[0,400000000]&c=120.146484375,
	 * 30.221101852485983&r=3000&s=0&h=10&o=33
	 */
	public static String MAP_API_URL = "http://search.ditu.aliyun.com/search?o=33&p=Distance";
	/** 定位position ***/
	public static String POSITION_API_URL = "http://recode.ditu.aliyun.com/dist_query?";

	/****** google map api begin ******/

	// https://maps.googleapis.com/maps/api/place/search/json?location=30.221134,120.146417$Distance&radius=500&sensor=false&key=AIzaSyBMXDB0fJdI6kp_tF2IkPhD52DWzhhNPFs

	public static String GOOGLE_MAP_KEY3 = "AIzaSyCh5nDQrXUm4Ydxf7YUgGgzkDa0bp96NZ8";

	public static String GOOGLE_MAP_KEY = "AIzaSyBADHuurEYEyAwIbsADx1fJo5iJ0ySSo2s"; // feige.lhj@taobao.com
																						// 绑定visa
																						// 100,000次/day
	public static String GOOGLE_MAP_KEY2 = "AIzaSyBMXDB0fJdI6kp_tF2IkPhD52DWzhhNPFs";

	/****** google map api end ******/

	/**
	 * google map key key: AIzaSyCh5nDQrXUm4Ydxf7YUgGgzkDa0bp96NZ8
	 */

	/**
	 * location（必填）- 您希望从中检索位置信息的文本纬度/经度值。<br>
	 * radius（必填）- 所传回位置结果相互之间的距离（以米为单位）。<br>
	 * sensor（必填）- 表示位置请求是否来自于使用位置传感器（如 GPS）的设备，从而确定此请求中发送的位置。该值必须为 true 或
	 * false。<br>
	 * client（必填）- 使用此服务指定已注册的应用程序。<br>
	 * signature（必填）- 使用客户端的加密密钥对此网址进行签名的生成值。<br>
	 * https://maps.googleapis.com/maps/api/place/search/json?location=30.221134
	 * ,120.146417&radius=500&sensor=false&key=
	 * AIzaSyBADHuurEYEyAwIbsADx1fJo5iJ0ySSo2s<br>
	 */
	public static String GOOGLE_MAP_API_URL = "https://maps.googleapis.com/maps/api/place/search/json?sensor=false&key=" + GOOGLE_MAP_KEY + "&";

	/**
	 * 扩展地图库 POST 网址必须包含以下参数： •sensor – 表示发送“地方”请求的设备是否使用了位置传感器（如
	 * GPS）来确定此请求中发送的位置。该值只能是 true 或 false •key – 您的应用程序的 API
	 * 密钥。此密钥用于标识您的应用程序，以便管理配额，从而让您的应用程序添加的“地方”可立即在该应用程序中使用。要创建 API 项目并获取密钥，请访问
	 * API 控制台。 POST 正文包含 于“地方”的信息，它必须根据指定的 output（JSON 或 XML）进行结构化处理。
	 * 
	 * •location（必填）– 您希望从中报告新的地方信息的文本纬度/经度值。•accuracy（必填）–
	 * 该请求基于的地方信号的精确度（以米表示）。 •name（必填）–“地方”的完整名称。 •types –“地方”所属的类型。虽然 types
	 * 采用了数组的形式，但目前只能为“地方”指定一种类型。有关详情，请参见支持的类型列表。如果支持的类型与此“地方”均不匹配，则可指定 other。
	 * •language – 报告“地方”名称时所使用的语言。请参见支持的语言列表及其代码。请注意，我们会经常更新支持的语言，因此该列表可能并不详尽。
	 * 参数格式以json格式传送如： { "location": { "lat": -33.8669710, "lng": 151.1958750 },
	 * "accuracy": 50, "name": "Google Shoes!", "types": ["shoe_store"],
	 * "language": "en-AU" }
	 * 
	 * 访问url：https://maps.googleapis.com/maps/api/place/add/json?sensor=
	 * true_or_false&key;=api_key HTTP/1.1
	 **/
	// json正解
	public static String GOOGLE_MAP_EXTENDS_API_URL = "https://maps.googleapis.com/maps/api/place/add/json?sensor=false&key=" + GOOGLE_MAP_KEY;

	/****
	 * 
	 只有在以下情况下才能删除“地方”： •请求删除“地方”的应用程序与添加该“地方”的应用程序相同。 •“地方”还未成功通过 Google Maps
	 * 审核流程，因此未对所有应用程序显示。 如果尝试删除不满足上述标准的“地方”，系统将会返回 REQUEST_DENIED 状态代码。 格式： {
	 * "reference": "place_reference" }
	 * 
	 * *****/
	// 删除添加点 json正解
	public static String GOOGLE_MAP_DELETE_API_URL = "https://maps.googleapis.com/maps/api/place/delete/json?sensor=false&key=" + GOOGLE_MAP_KEY;

	/**
	 * check in 增加google地图的权重 reference — A textual identifier that uniquely
	 * identifies a Place, returned from a Place Search request.
	 */
	public static String GOOGLE_MAP_CHECK_IN_API = "https://maps.googleapis.com/maps/api/place/check-in/json?sensor=false&key=" + GOOGLE_MAP_KEY3;

	/**
	 * q: This argument supplies the query, or search expression, that is passed
	 * into the searcher.<br>
	 * callback:This argument alters the standard response format. When
	 * supplied, instead of producing a simple JSON-encoded object, the system
	 * produces a JavaScript function call response where the value of callback
	 * specifies the name of the function called in the response.<br>
	 * context:This argument is related to the callback argument. When both are
	 * supplied, the value of context alters the normal response format
	 * associated with callback. The new format is:<br>
	 * hl:This argument supplies the host language of the application making the
	 * request. If hl is present in the URL, it will be used. Otherwise, if the
	 * Accept-Language HTTP header is present, it will be used. If neither is
	 * specified, a value of en is assumed.<br>
	 * mrt:This optional argument specifies which type of listing the user is
	 * interested in. Valid values include:<br>
	 * blended requests KML, Local Business Listings, and Geocode results<br>
	 * kmlonly requests KML and Geocode results<br>
	 * localonly requests Local Business Listings and Geocode results<br>
	 * If this argument is not supplied, the default value of localonly is used.<br>
	 * rsz:This argument supplies an integer from 1–8 indicating the number of
	 * results to return per page.<br>
	 * sll:This optional argument supplies the search center point for a local
	 * search. It's value is a comma separated latitude/longitude pair, e.g.,
	 * sll=48.8565,2.3509.<br>
	 * sspn:This optional argument supplies a bounding box that the local search
	 * should be relative to. When using a Google Map, the sspn value can be
	 * computed using: myMap.getBounds().toSpan().toUrlValue(); (e.g.,
	 * sspn=0.065169,0.194149).<br>
	 * start:This argument supplies the start index of the first search result.
	 * Each successful response contains a cursor object (see below) which
	 * includes an array of pages. The start property for a page may be used as
	 * a valid value for this argument. For reference, a sample cursor object is
	 * shown below:<br>
	 * userip:This argument supplies the IP address of the end-user on whose
	 * behalf the request is being made. Requests that include it are less
	 * likely to be mistaken for abuse. In choosing to utilize this parameter,
	 * please be sure that you're in compliance with any local laws, including
	 * any laws relating to disclosure of personal information being sent.<br>
	 * 
	 */
	public static String GOOGLE_MAP_KEYWORD_API_URL = "https://ajax.googleapis.com/ajax/services/search/local?key=" + GOOGLE_MAP_KEY
			+ "&sensor=false&v=1.0&";

	/**
	 * address（必需）- 您要进行地址解析的地址。*<br>
	 * latlng（必需）- 您希望获取的、距离最近的、可人工读取地址的纬度/经度文本值。*<br>
	 * bounds（可选）- 要在其中更显著地偏移地址解析结果的可视区域的边框。（有关详细信息，请参见下文的可视区域偏向。）<br>
	 * region（可选）- 区域代码，指定为 ccTLD（“顶级域”）双字符值。（有关详细信息，请参见下文的区域偏向。）<br>
	 * language（可选）- 传回结果时所使用的语言。请参见支持的区域语言列表。请注意，我们会经常更新支持的语言，因此该列表可能并不详尽。如果未提供
	 * language，地址解析器将尝试尽可能使用发送请求的区域的本地语言。<br>
	 * sensor（必需）- 指示地址解析请求是否来自装有位置传感器的设备。该值必须为 true 或 false。<br>
	 * 请注意：您可以传递 address 或 latlng 进行查找。（如果传递
	 * latlng，则地址解析器执行反向地址解析。有关详细信息，请参阅反向地址解析。）<br>
	 * http://maps.google.com/maps/api/geocode/json?latlng=40.714224,-73.961452&
	 * sensor=true_or_false
	 */
	public static String POSITION_GOOGLEMAP_API_URL = "http://maps.googleapis.com/maps/api/geocode/json?sensor=false&";

	/**
	 * 高德地图所用key KEY:
	 * e5bd4d7185abb5cbee3f516e70672494f25be2fb4cd66a5769c89e9e32b9bc6aad018a11118f1187
	 * 所属EID: 69136
	 */
	public static String MAPABC_KEY = "e5bd4d7185abb5cbee3f516e70672494f25be2fb4cd66a5769c89e9e32b9bc6aad018a11118f1187";
	/**
	 * config: 关键字查询服务<br>
	 * cityCode: 城市编码:支持编码和名称形式，如010或者北京，需要进行urlencode编码，编码格式参照enc参数指定，全国为total<br>
	 * searchName: 为查询名称:默认匹配名称,地址,类型,需要进行urlencode编码，编码格式参照enc参数指定<br>
	 * searchType: 查询类型:POI分类类型,需要进行urlencode编码，编码格式参照enc参数指定<br>
	 * number: 返回的POI结果个数 每页记录数<br>
	 * batch: POI结果显示的页数 分页号<br>
	 * resType: resType=xml/json 返回格式<br>
	 * enc： enc=gb2312/utf-8 编码设定，如果设定utf-8，那么必填参数<br>
	 * srctype： 数据源类型:<br>
	 * 基础库 POI <br>
	 * 企业地标 DIBIAO<br>
	 * 公交站台 BUS<br>
	 * 通用编辑器 USERPOI<br>
	 * 上述数据源可以混合查询，例如公交数据+基础库数据查询
	 * srctype=BUS:1000%2bPOI,代表前1000条数据为公交数据，后面为基础库数据<br>
	 * a_k: 用户申请的key
	 */
	public static String MAPABC_KEYWORD_API_URL = "http://search1.mapabc.com/sisserver?enc=utf-8&config=BESN&resType=json&a_k=" + MAPABC_KEY;

	/**
	 * config: BELSBXY-根据中心点的坐标（x，y）查询周边POI;BELSBN-根据中心点关键字查询周边POI;BELSBGC-
	 * 根据中心点gridcode查询周边POI<br>
	 * cenX： 中心点x坐标 经度<br>
	 * cenY： 中心点y坐标 纬度<br>
	 * range： 周边查询范围 周边查询时，圆型区域的 默认3000<br>
	 * naviflag: naviflag=0/1 导航距离排序标识<br>
	 */
	public static String MAPABC_SEARCH_API_URL = "http://search1.mapabc.com/sisserver?enc=utf-8&config=BELSBXY&resType=json&a_k=" + MAPABC_KEY;

	/**
	 * config: SPAS
	 * 
	 */
	public static String MAPABC_POSITION_API_URL = "http://search1.mapabc.com/sisserver?config=POSDES&a_k=" + MAPABC_KEY;

}
